<

複数の Flutter 画面またはビュー

シナリオ

Flutter を既存のアプリに統合する場合は、 または、既存のアプリを段階的に移行して Flutter を使用することもできます。 複数追加したくなるかもしれません 同じプロジェクトにインスタンスを flutterします。 特に、これは次のような場合に役立ちます。 次のシナリオ:

  • 統合された Flutter 画面がリーフ ノードではないアプリケーション ナビゲーション グラフとナビゲーション スタックは、以下のハイブリッド混合物である可能性があります。 ネイティブ -> flutter -> ネイティブ -> flutter。
  • 複数の部分画面 Flutter ビューが統合される可能性がある画面 そしてすぐに見える。

複数の Flutter インスタンスを使用する利点は、それぞれのインスタンスが インスタンスは独立しており、独自の内部ナビゲーションを維持します スタック、UI、アプリケーションの状態。これにより、アプリケーション コード全体が簡素化されます。 状態を維持する責任があり、モジュール性が向上します。詳細については、 複数の Flutter の使用を動機付けるシナリオは、次の場所にあります。flutter.dev/go/multiple-flutters

Flutter 2 以降はこのシナリオ向けに最適化されており、増分は低くなります。 Flutter インスタンスを追加するためのメモリ コスト (~180kB)。この固定費は 削減により、複数の Flutter インスタンス パターンをより自由に使用できるようになります アプリへの追加統合で。

コンポーネント

Android と iOS の両方に複数の Flutter インスタンスを追加するための主要な API 新しいものに基づいていますFlutterEngineGroupクラス (Android API、iOS API) 構築するFlutterEngineではなく、FlutterEngine以前に使用されたコンストラクター。

一方、FlutterEngineAPI は直接的で使いやすかったため、FlutterEngine同じものから生まれたFlutterEngineGroupパフォーマンスがある GPU などの共通の再利用可能なリソースの多くを共有する利点 コンテキスト、フォント メトリック、グループ スナップショットの分離により、初期処理の高速化につながります。 レンダリングの遅延とメモリ使用量の削減。

  • FlutterEngineから生み出されたFlutterEngineGroupに使用できます 次のような UI クラスに接続しますFlutterActivityまたFlutterViewController通常構築されたキャッシュと同じ方法でFlutterEngines.

  • 最初FlutterEngineから生み出されたFlutterEngineGroup必要ありません その後の人生のために生き残るためにFlutterEngine共有する 少なくとも 1 人が生きている限り、リソースが得られますFlutterEngineまったく 回。

  • 一番最初の作成FlutterEngineからFlutterEngineGroupもっている 同じ性能特性を構築するようにFlutterEngine以前に行ったコンストラクターを使用します。

  • いつすべてFlutterEngineからのFlutterEngineGroup破壊され、次はFlutterEngine作成されたものは、実際のものと同じパフォーマンス特性を持っています。 最初のエンジン。

  • FlutterEngineGroupそれ自体は、生成されたすべてのオブジェクトを超えて存続する必要はありません エンジン。を破壊するFlutterEngineGroup既存のスポーンされたものには影響しませんFlutterEngineただし、追加のスポーン機能は削除されますFlutterEngine既存の生成されたエンジンとリソースを共有します。

コミュニケーション

Flutter インスタンス間の通信は次を使用して処理されます。プラットフォームチャネル(また鳩) ホストプラットフォーム経由。コミュニケーションに関するロードマップを確認するには、 または複数の Flutter インスタンスを強化するためのその他の計画された作業については、チェックしてください。問題 72009。

サンプル

使用方法を示すサンプルを見つけることができますFlutterEngineGroupAndroid と iOS の両方でGitHub。

A sample demonstrating multiple-Flutters